
class EstagiarioCursoController {

    int total = 0;

    //se a url vier sem action redireciona para a create
    def index  = {
        redirect(action: "create");
    };

    //closure que carrega a tela de cadastro
    def create = {
        if(!verificaLogon()){
            return;
        }
        //carrega os atributos
        def estagiarioCursoInstance = new EstagiarioCurso();
        //busca as formaçãões cadastradas para o estagiario em questão
        def estagiarioCursoInstanceList = EstagiarioCurso.findAllByEstagiario(session.pessoa);
        //se vier conta a quantidade para a paginação
        if(estagiarioCursoInstanceList){
           total = estagiarioCursoInstanceList.count();
        }
        return [estagiarioCursoInstance:estagiarioCursoInstance,
                estagiarioCursoInstanceList:estagiarioCursoInstanceList,
                estagiarioCursoInstanceTotal:total];
    }

    //closure que grava o registro
    def save   = {
        if(!verificaLogon()){
            return;
        }
        //carrega os atributos de formacao e recebe os dados
        def estagiarioCursoInstance = new EstagiarioCurso(params);
        //busca as formaçãões cadastradas para o estagiario em questão
        def estagiarioCursoInstanceList = EstagiarioCurso.findAllByEstagiario(session.pessoa);
        //se vier conta a quantidade para a paginação
        if(estagiarioCursoInstanceList){
           total = estagiarioCursoInstanceList.count();
        }
        //grava o registro
        if (estagiarioCursoInstance.save(flush: true)) {
            redirect(action: "create");
        }else {
            render(view:"create",model: [estagiarioCursoInstance: estagiarioCursoInstance,
                                         estagiarioCursoInstanceList: estagiarioCursoInstanceList,
                                         estagiarioCursoInstanceTotal:total]);
        }
    };

    //closure que carrega a tela de edição de cadastro
    def edit   = {
        if(!verificaLogon()){
            return;
        }
        //carrega os atributos de formacao a partir do ID
        def estagiarioCursoInstance = EstagiarioCurso.findById(params.id);
        //busca as formaçãões cadastradas para o estagiario em questão
        def estagiarioCursoInstanceList = EstagiarioCurso.findAllByEstagiario(session.pessoa);
        //se vier conta a quantidade para a paginação
        if(estagiarioCursoInstanceList){
           total = estagiarioCursoInstanceList.count();
        }
        //se retornar dados, envia os mesmos
        if (estagiarioCursoInstance){
            return [estagiarioCursoInstance: estagiarioCursoInstance,
                    estagiarioCursoInstanceList: estagiarioCursoInstanceList,
                    estagiarioCursoInstanceTotal:total];
        }else {
            flash.message="${message(code:'default.not.found.message', args: [message(code: 'estagiarioCurso.label', default: 'EstagiarioCurso'), params.id])}";
        }
    };

    //closure que grava as alterações do registro
    def update   = {
        if(!verificaLogon()){
            return;
        }
        //carrega os atributos de formacao e recebe os dados
        def estagiarioCursoInstance = EstagiarioCurso.get(params.id);
        estagiarioCursoInstance.properties = params;
        //busca as formaçãões cadastradas para o estagiario em questão
        def estagiarioCursoInstanceList = EstagiarioCurso.findAllByEstagiario(session.pessoa);
        //se vier conta a quantidade para a paginação
        if(estagiarioCursoInstanceList){
           total = estagiarioCursoInstanceList.count();
        }
        //grava as alterações
        if(estagiarioCursoInstance.save()){
            flash.message = "Dados alterados com Sucesso!";
            redirect(action: "create");
        }else {
            render(view:"edit",model: [estagiarioCursoInstance: estagiarioCursoInstance,
                                       estagiarioCursoInstanceList: estagiarioCursoInstanceList,
                                       estagiarioCursoInstanceTotal: total]);
        }
    };

    //closure que exclui os registros
    def delete = {
        if(!verificaLogon()){
            return;
        }
        //carrega os atributos do registro a partir do ID
        def estagiarioCursoInstance = EstagiarioCurso.findById(params.id)
        //exclui o registro
        estagiarioCursoInstance.delete();
        flash.message = "Registro excluido com sucesso.";
        redirect(action: "create");
    };

    /*
     * Método que verifica se o usuário está logado.
     * Se não estiver logado é redirecionado para home
     */
    private boolean verificaLogon() {
        if(!session["pessoa"]){
            flash.message = "Você precisa estar logado para acessar esta página.";
            redirect(controller:'login', action:'auth');
            return false;
        }

        return true;
    }

}
